import java.util.Scanner;

/**
 * Juego Torres de Hanoi
 * 
 * @author victor
 * @version 0.1
 */
public class TorresHanoi {

	/**
	 * Inicio del juego. Pide al usuario el numero de fichas totales a mover
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n;
		n = sc.nextInt(); // numero de fichas a mover
		ToresDeHanoiIterativo(n, "1", "2", "3"); // 1:origen 2:auxiliar 3:destino
	}

	/**
	 * Algoritmo iterativo del juego
	 * @param nroDiscos numero de discos totales
	 * @param origen nombre de la torre 1
	 * @param destino nombre de la torre 2
	 * @param auxiliar nombre de la torre 3
	 */
	private static void ToresDeHanoiIterativo(int nroDiscos, String origen, String destino, String auxiliar) {
		// declaracion variables necesarias
		String[] pilaO = new String[10], pilaD = new String[10], pilaX = new String[10];
		int[] pilaN = new int[10];
		int tope;
		String varaux;
		boolean band;

		tope = 0;
		band = false;

		while (nroDiscos > 0 && band == false) {
			// mueve el disco mas pequeno
			while (nroDiscos > 1) {
				tope = tope + 1;
				pilaN[tope] = nroDiscos;
				pilaO[tope] = origen;
				pilaD[tope] = destino;
				pilaX[tope] = auxiliar;
				nroDiscos = nroDiscos - 1;
				varaux = destino;
				destino = auxiliar;
				auxiliar = varaux;
			}
			System.out.println(nroDiscos + ": " + origen + " -> " + destino);
			band = true;

			if (tope > 0) {
				nroDiscos = pilaN[tope];
				origen = pilaO[tope];
				destino = pilaD[tope];
				auxiliar = pilaX[tope];
				tope = tope - 1;
				System.out.println(nroDiscos + ": " + origen + " -> " + destino);

				nroDiscos = nroDiscos - 1;
				varaux = origen;
				origen = auxiliar;
				auxiliar = varaux;
				band = false;
			}
		}
	}
}
